GUIs are well known mechanisms by which users can interact with computer programs. A typical GUI provides windows and/or dialog boxes that enable a user to initiate an operation by the computer program on the user's computer. For example, a user of a word processing program can open a spell checking dialog box by selecting a spell checking icon from a toolbar in the word processing program's window. However, this type of GUI design suffers from several significant problems.
Specifically, programs with the type of GUI just described are provided in standard packages with specific predetermined operations. In other words, the user is not able to customize and/or extend the GUI by editing it so as to add or remove specific operations that the user desires or does not desire. Moreover, since the programs are provided in standard packages, each time an upgrade is made to the program, the user must install the upgrade on the network or computer hosting the program.
Therefore, there is a need for a graphical user interface that is editable and can be upgraded easily without user involvement. The World Wide Web (WWW), which links many of the Web server computers making up the Internet, supports these features. The Web server computers store documents identified by unique universal resource locators (URLs). Many of the documents stored at these Web server computers are written in a standard document description language called hypertext markup language (HTML). Using HTML, a designer of a Web document can create displayable hypertext links in the Web document that also identify the URLs of other Web documents. When selected, the hypertext links provide links to corresponding Web documents at other Web server computers based on the URLs they identify.
A user accesses Web documents stored on the WWW using a Web browser (a computer program designed to display HTML documents and communicate with Web servers) running on a Web client computer connected to the Internet. This is done when the user selects a displayed hypertext link within a Web document currently being viewed with the Web browser. The Web browser then issues a hypertext transfer protocol (HTTP) request for the requested Web document to the Web server computer identified by the selected hypertext link. In response, the designated Web server computer returns the requested Web document to the Web browser with the HTTP.
The standard HTML syntax of Web pages and the standard communications protocol (HTTP) supported by the WWW guarantee that any Web browser can communicate with any Web server. However, until the invention of the Java programming language and Java applets (i.e., programs written in the Java programming language that are part of a Web document), there was no way to provide platform independent programs over the Internet and the WWW.
An important feature of the Java programming language is the platform independence of Java applets written in the Java language and compiled into Java bytecode. This means that such programs can be executed on any computer having a Java virtual machine module where the Java virtual machine module interprets the Java applets for execution on the specific platform of the computer.
Another important feature of Java applets is the verifiability of their integrity by a Java virtual machine module prior to their execution. The Java virtual machine module determines whether Java applets conform to predefined stack usage and data usage restrictions to ensure that Java applets cannot overflow or underflow the virtual machine module's stack and utilize only data of known data types. As a result, Java applets cannot create object pointers and generally cannot access system resources other than those resources which the user explicitly grants it permission to use. Consequently, when Java applets are downloaded to a client computer, a Web browser that is running on the client computer and has a Java virtual machine module will be able to verify and then execute the downloaded applets.
Thus, the WWW clearly supports an environment for a GUI that is based on Web documents. However, to date, interactive GUI Web documents have not yet been created nor have Web browsers been configured with an editor to enable editing of Web documents located at remote Web server computers.